package io.github.echarts.option.component.axis;

import io.github.echarts.option.abstracts.AbstractOption;
import io.github.echarts.option.style.TextStyle;

/**
 * 坐标轴标签的配置项。
 */
public class AxisLabel extends AbstractOption {
    
    private static final long serialVersionUID = 1L;
    
    private Boolean show;
    private Boolean inside;
    private TextStyle textStyle;
    private String formatter;
    private Double rotate;
    private Object interval; // 可以是数值或字符串
    private Integer distance; // 标签与轴线的距离

    /**
     * 获取是否显示坐标轴标签
     * 
     * @return 是否显示
     */
    public Boolean getShow() {
        return show;
    }
    
    /**
     * 设置是否显示坐标轴标签
     * 
     * @param show 是否显示
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setShow(Boolean show) {
        this.show = show;
        return this;
    }
    
    /**
     * 获取标签是否朝内放置
     * 
     * @return 是否朝内放置
     */
    public Boolean getInside() {
        return inside;
    }
    
    /**
     * 设置标签是否朝内放置
     * 
     * @param inside 是否朝内放置
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setInside(Boolean inside) {
        this.inside = inside;
        return this;
    }
    
    /**
     * 获取文本样式
     * 
     * @return 文本样式
     */
    public TextStyle getTextStyle() {
        return textStyle;
    }
    
    /**
     * 设置文本样式
     * 
     * @param textStyle 文本样式
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setTextStyle(TextStyle textStyle) {
        this.textStyle = textStyle;
        return this;
    }
    
    /**
     * 获取标签内容格式器
     * 
     * @return 格式器
     */
    public String getFormatter() {
        return formatter;
    }
    
    /**
     * 设置标签内容格式器
     * 
     * @param formatter 格式器
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setFormatter(String formatter) {
        this.formatter = formatter;
        return this;
    }
    
    /**
     * 获取标签旋转角度
     * 
     * @return 旋转角度
     */
    public Double getRotate() {
        return rotate;
    }
    
    /**
     * 设置标签旋转角度
     * 
     * @param rotate 旋转角度
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setRotate(Double rotate) {
        this.rotate = rotate;
        return this;
    }
    
    /**
     * 获取标签显示间隔
     * 
     * @return 间隔
     */
    public Object getInterval() {
        return interval;
    }
    
    /**
     * 设置标签显示间隔（字符串形式）
     * 
     * @param interval 间隔
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setInterval(String interval) {
        this.interval = interval;
        return this;
    }
    
    /**
     * 设置标签显示间隔（整数形式）
     * 
     * @param interval 间隔
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setInterval(int interval) {
        this.interval = interval;
        return this;
    }
    
    /**
     * 获取标签与轴线的距离
     * 
     * @return 距离
     */
    public Integer getDistance() {
        return distance;
    }
    
    /**
     * 设置标签与轴线的距离
     * 
     * @param distance 距离
     * @return 当前实例，用于链式调用
     */
    public AxisLabel setDistance(Integer distance) {
        this.distance = distance;
        return this;
    }
} 